/*
 *  Target.h
 *  glow
 *
 *  Created by sunjun on 11-6-14.
 *  Copyright 2011 sunstdio. All rights reserved.
 *
 */

//////////////////////////////////////////////////////////////////////////

#ifndef __Target__
#define __Target__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN(Render)

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented target interface.
	class Target: public Operation
	{
	public:		
		// constructor
		Target(U32&fbo);
		Target(const BaseTexture*color, U32 face=0);
		
		// destructor
		virtual ~Target();		

	private:
		// implement the render operation
		VOID operator() (class Context*rc);

	private:
		GPtr<class Context>mRCPtr;
		U32	mFBO, mRBO;
		BaseTexturePtr mColorPtr;
		U32 mFace;
		BOOL mUnused;
	};

	//////////////////////////////////////////////////////////////////////////

	typedef GPtr<Target>TargetPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Target__

//////////////////////////////////////////////////////////////////////////